23

» Администрация XGM / Ресурс вместо главной проекта

Похожие вопросы:

ответ
В данный момент нет планов на такие изменения, до большого обновления кодовой базы. Откладывается на неопределенное время.

23

» WarCraft 3 / Как удалить всех юнитов у бота?

Похожие вопросы:

ответ
>>В не правильно условий удаления?
Возможно идёт перезапись переменных, из-за чего не всё удаляется.
Актуально с глобалками
Смотрите в сторону мультиплеерности.
Если в ваших тестах с одним героем всё хорошо, то не факт что всё будет хорошо, если одновременно кастанутся 2 одинаковых спелла, которые построены на одних и тех же переменных.

23

» WarCraft 3 / Помогите сделать способность

Похожие вопросы:

ответ
Хештаблица в помощь
ответ
E: Unit starts the effect of an ability.
C: Ability being cast =
A: Set Casting unit Life to (Life of Casting unit + 200).
Вот скрин настройки действия.
ответ
Аура не сразу вешается на юнита, нужна задержка.
ответ
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
ответ
Хотел было написать словами, но понял, что это будет дольше, чем сделать самому.
PS: тут GUI, указывайте в описании вопроса, как надо делать.

23

» WarCraft 3 / Таймер

Похожие вопросы:

ответ
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
ответ
Ну с таймером я хз, проверял раз 10 карту, никаких проблем не было, по поводу тренировочного лагеря, если без костылей, тут нужна хэш-таблица, а её я могу юзать только через код
код
define{void = nothing; int = integer; bool = boolean}
library mylib initializer init{
    private trigger trg = CreateTrigger()
    private hashtable H = InitHashtable()
    
    private void act(){
        unit u = GetEventDamageSource(); int i = GetHandleId(u), c = LoadInteger(H,i,0)+1
        texttag tt = CreateTextTag()
        
        SetTextTagText(tt,I2S(c)+"/3",.0276)
        SetTextTagPosUnit(tt,u,0)
        SetTextTagColor(tt,255,0,255,0)
        SetTextTagVelocity(tt,.05325*Cos(1.570788),.05325*Sin(1.570788))
        SetTextTagPermanent(tt,false)
        SetTextTagLifespan(tt,1.)
        SetTextTagFadepoint(tt,.0)
        
        if c >= 3{
            SetHeroStr(u,GetHeroStr(u,false)+10,true)
            DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIsm\\AIsmTarget.mdl",u,"origin"))
            c = 0
        }
        SaveInteger(H,i,0,c)
        
        u = null; tt = null
    }
    
    private void eee(){
        TriggerRegisterUnitEvent(trg,GetEnumUnit(),EVENT_UNIT_DAMAGED)
    }
    private bool mycond1(){
        return IsUnitType(GetEventDamageSource(),UNIT_TYPE_HERO) && GetEventDamage() > 0
    }
    private bool mycond(){
        return GetUnitTypeId(GetFilterUnit()) == 'h000'
    }
    private void init(){
        group g = CreateGroup()
        boolexpr b = Condition(function mycond)
        
        GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea,b)
        ForGroup(g,function eee)
        DestroyBoolExpr(b); b = Condition(function mycond1)
        TriggerAddCondition(trg,b)
        TriggerAddAction(trg,function act)
        
        DestroyBoolExpr(b)
        GroupClear(g); DestroyGroup(g)
        trg = null; b = null; g = null
    }
}
ответ
зависит от твоих нужд
например, мне нужно хранить последние 5 секунд позиций нескольких юнитов, т.е. разбитые на участки по 0.25 секунд снимки хп/мп/координат каждого из них
это 5*4 = 20 значений каждого, итого 80
когда мы доходим до секунды 5.25, то надо сдвигать все предыдущие на единичку назад, и вставлять текущие данные на последний слот
это 79*4 операций чтения и 80*4 записей (считаю грубо, всё для примера)
когда это делается в хештбалице, нагрузка значительно выше выходит, чем если делать на массивах (хт перебирает ключи как ассоциативный массив, а обычный массив просто обращается к памяти с указанным адресом, в разы быстрее).
Но чтобы делать эту процедуру на массивах, тебе нужен индексатор этих самых юнитов, чтобы их уникальный ключ не превышал лимит массива. Это дополнительный код, который тебе нужно реализовать с нуля. Но после реализации система становится быстрее.
Была она до этого медленной? да. Влияло ли это на игру? Нет, это 100-200 микросекунд.
Опять же, когда у тебя есть пре-процессор типа vJASS + сниппеты типа Table , которые имитируют массив самостоятельно, они снимают с тебя часть обязанностей. Но из-за того, что они созданы для ОБЩЕГО случая, они все равно не дадут того выигрыша в скорости, который можешь ожидать.
Используй то, что тебе удобнее, и оптимизируй только когда это реально влияет на игру. habr.com/ru/post/550926
И не забывай, что дота стала популярной еще во времена, когда была написана почти целиком на ГУИ и нихера в ней не пахло даже оптимизацией.
ответ
Таймеры не могут создаваться при инициализации карты, так как действия инициализации проходят не тогда, когда проходит загрузка и запускается сама карта, а сразу как начинается загрузка.
ответ
period - 0.05, период обновления
cd - длительность, сколько должен заполнятся хп бар
это у меня был фрейм перезарядки, слева направо адаптируйте под себя
function StartFrameCD(cd, fh,period)
    local amount = period*100 / cd
    local full = 0

    TimerStart(CreateTimer(), period, true, function()
        full = full + amount
        BlzFrameSetValue(fh, full)
        if full >= 100 then
            DestroyTimer(GetExpiredTimer())
            full = 0
        end
    end)
end

Это работает железно, я так делаю каст бары из фреймов или эффектов, вот ещё пример

23

» WarCraft 3 / Помогите запустить карту

Похожие вопросы:

ответ
Если есть тимвиверные лаги, есть ещё миллион других программ для удалёнки, AnyDesk или Spleshtop (вроде платный, но это не проблема)
Но я делал по другому: по впн цеплялся домой на роутер, на домашнем компе на Win 10 pro создавал второго пользователя (в принципе можно и создавать и не патчить десятку под сервер), подключался через удалённый рабочий стол к домашнему компу и в принципе всё, vpn соедение на убунте хз где, но remmina для удалённого рабочего стола есть точно, ну или параллелс десктоп в режиме rdp.
Если ничего не понятно, то могу подробно расписать что и как я делал
Так же никто не отменял поставить варик на любой комп в рабочей сети (если есть доступ на такие пакости), хоть на компьютер бухглатера и в режиме второго пользователя сидеть по RDP на этом компе, WE вроде сильно не грузит =)
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)
ответ
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.

BartSi, каким конвертером 1.31 -> 1.26 пользовался?

Hodor, твой конвертер случайно не шаманит с камерами?
ответ
8gabriel8, ни разу не сталкивался с вылетами редактора при длительной работе. Как я считаю, Reforged переписал пути к WC3 в регистре, из-за чего старый редактор перестал работать, но это лишь догадка.

23

» WarCraft 3 / Вылет карты

Похожие вопросы:

ответ
Было создано 22 366 679 экземпляров класса CUnitListNode, которые заняли 255.9 МБ памяти.
При очередной попытке выделения, игра упала.
Виной всему утечки памяти: за 21 минуту набралось 80 тысяч групп и 20 тысяч точек.
Также, из-за выполнения большого количества кода, сильно лагает.
На стадии выбора героя (первые две минуты), выполняется 550 000 операций в секунду, а далее — 1 200 000.
Для сравнения: лимит потока — 300 000 операций.
Хорошо, что ты приложил карту, так как в логе маловато информации.
ответ
nvc123, увы там дефолт ИИ, недаст особо управлять мобами.
Щяс скину пример из доты но более понятный, как заставить нейтралов ходить и атаковать.
Вот вам пример контроля нейтралами.
ответ
Проблема решена.Это было из-за модели. Углубляться в подробности не буду.
ответ
Вранье, 1.26 самый стабильный патч, на нём ничего не вылетает.
А когда вылет происходит? Я запустил в карту, она работает.

23

» WarCraft 3 / Триггер смены владельца здания.

Похожие вопросы:

ответ
Если игрок атакует шахту, которая ему не принадлежит и имеет запас здоровья 1000 или меньше, должна ли последняя перейти в его владение? Или может после перехода во владение шахта должна увеличивать свой запас здоровья, чтобы он стал больше 1000?
Так?
ответ
NazarPunk, каком "таком"?
Событие - Любой юнит получает урон
Условие -  (Тип Triggering Unit равно Х) И (Здоровье Triggering Unit - Полученный урон <= 0.)
Действия
Установить получаемый урон на 0.
Уставить владельца Triggering Unit: Владелец источника урона.
Установить здоровье для Triggering Unit на 100%.
ответ
Вы смотрели тут, тут и тут?
Там всё через gui
ответ
Далее, мне сделали способность в заказах, я перенес на карту и она работала при проверке. Когда я удалил героя проверки, то способность перестала работать, хотя там не указывается юнит. В чем причина — непонятно
Причина в твоих руках, которые решили поломать спелл)
Скрин с моего спелла

И отредаченный тобой

Ну и небольшой совет, если ты продолжишь лепить карту в таком духе, то рано или поздно действия с открытием вкладки переменных юнитов у тебя начнут дико виснуть, а большое кол-во блокираторов заставят карту компилиться пол часа

Но если это приближённый к идеальному размеру, тогда пофиг

абилку поправил, помимо этого ещё разрешенные цели не были указаны верно


С драгуном хз, я сбросил пару данных и всё заработало

вот карта

возможно вылет был из-за требований

23

» WarCraft 3 / Картостроение

Похожие вопросы:

ответ
удалять нельзя
чтобы закрыть выбери лучший ответ
ответ
наработка есть на форуме
в общем надо скрывать крышу когда герой заходит в дом
даже статья есть
ответ
Тест карты кампании не показывает нестандартных юнитов кампании. Нужно сохранять и запускать через игру вручную, если что.
ответ
Лучший учитель и путеводитель по картостроению


23

» WarCraft 3 / Улучшение

Похожие вопросы:

ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
ну дай фриз юниту просто
но это не только убор скорости, это убор вообще всего, это по сути превращение в овоща со слюнями изо рта до момента, пока ты не заанпауишь юнита

если не покатит, то устраивай клоунаду
ройся в стандартных абилках
можешь вот как с яйцом предложили, можешь безэффектный баш швырять в лицо ублюдку (хотя это тоже фриз будет тащемта), можешь спавнить даммика с пасосом (одержимость баньши) и заставлять кастовать его 999 секунд и прогонять даммика, когда тебе нужно, можешь руты кипера бросать: тоже безэффектные + без дамага
включай фантазию

хочется чтобы эта замена происходила не моментально, а через какое то время (на подобии обучения в зданиях),
Юзай однократный таймер (или же если таких юнитов будет очень много, то загони весь этот скот в группу отдельную и сделай пустышную абилку родную им с 10 ЛВЛами и, условно, каждую минуту каждому юниту из группы этой снижай лвл на 1 этой абилки-пустышки периодиком, а когда будет = 1, то морфи в нужного юнита), вейты - зло. Но минус в том, что если это мелкая темка, то на неё целый лишний триггер будет.
ответ
Сам процесс как раз важен. Я его использую как таймер, мол когда улучшение сделается, то произойдет какое-то действие и т.д.
Сделай это просто таймером и окном таймера.
ответ
Проблема решилась. Для новичков - Игрок - Установить текущий уровень исследования
ответ
Ладно, раз менее костыльного решения проблемы нет, сделал дополнительное исследование (скрытое), которое триггерно изучается при изучении 3-го левела оригинального улучшения.

23

» WarCraft 3 / вопрос по карте

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
ответ
~8gabriel8:
  1. Создать дамми-шахтёров.
  2. Триггер:
Событие: Время - Elapsed 600 sec.
Условие:
Действие: Группа игроков - Pick up (All players) and do actions
Отряд - Pick up (Units of (Picked player) and ((Matching unit) не равно Здание равно Да)) and do actions
Боевая единица - Move (Picked unit) instantly to (куда надо)

23

» WarCraft 3 / Как сделать так когда герой подбирал предмет...

Похожие вопросы:

ответ
~8gabriel8:
К сожалению, я нашёл лишь условие "количество предметов у юнита" о типе предметов, там нет и речи
Верно, мой косяк. Надо циклом перебирать предметы. Вот карта с триггером и скрин:

23

» WarCraft 3 / Как прикрепить область к юниту?

Похожие вопросы:

ответ
Блокираторы пути. Для создания космоса и безды можно использовать специальный скайбокс + специальный набор декора + прозрачный тайл.
Пользуйся поиском

23

» WarCraft 3 / JNGP на версию 1.31

Похожие вопросы:

ответ
Нужно фиксить реестр,
  1. "Открыть редактор реестра (Windows + R, ввести regedit).
Перейти по пути HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\WorldEdit.
Найти строку Tool Windows и удалить ее.
Готово. Теперь редактор старых версий будет работать. Но проблема повторится, если зайти в редактор 1.32. При ее возникновении нужно заново удалить строку Tool Windows."
  1. Делал для себя прогу, которая делает вариант 1 автоматом. Гарантий не дам. drive.google.com/file/d/1R4Kh_7iS9RdUxA9TU_-r_UnayHjZ6Kev/view?u...
ответ
Эм.. чел, а ты случайно не трогал карты путей в ро? Я как-то поставил туда текстуру путей и такая же проблема была, ы)

п.с. вид -> пути: суша

23

» WarCraft 3 / ИИ И нестандартные войска

Похожие вопросы:

ответ
www.wc3c.net/tools/specs тут есть
NEW Frozen Throne expansion pack format of "war3map.w3u / w3t / w3b / w3d / w3a / w3h / w3q" The object data files (thanks PitzerMike):
ответ
Ё-маё. Просто в самом начале редактора ии выбираешь расу - вместо орков ставишь не стандартная раса(это не обязательно).
Потом копируешь все данные о войсках в свой ИИ - о всё.
ответ
Black Soul:
Чтобы использовать нестандартные данные редактора объектов в редакторе ИИ, для начала их нужно импортировать:
ответ
Я думаю нет, у ИИ четко прописано кого брать в атаку и кто эти юниты, артелерия, воздух, поддержка.
Твой дракон не подходит ИИ и он его игнорирует, нужно модифицировать ИИ, либо брать стандартного юнита и на его основе сделать дракона, но опять же, роль должна быть та же, то ИИ начнет пытатся добывать лес драконом, считая его вурдалаком.
ответ
Стандартные войска - это то, что есть изначально в варике. Все остальные войска, которые ты создаёшь - нестандартные юниты. Фишка в том, что стандарт/нестандарт - понятия редактора и с геймплеем никак не связаны.
Если же ты хочешь, чтобы в алтаре можно было призвать твоего юнита - редактируй алтарь, у него есть список героев. Но тогда надо ещё добавить твоего героя в константы, иначе он не будет входить в лимит "стандартных" героев.

23

» WarCraft 3 / Не работает ИИ у наг.

Похожие вопросы:

ответ
Оказывается озвучка пропадает только у тех юнитов, у которых нестандартная модель...
И этот баг скорей всего никак не исправить.

23

» WarCraft 3 / Триггер с шансом

Похожие вопросы:

ответ
Урон настраивается через уровень способности, или как было сказано unit - damage target
команда для использования нестандартной способности берется от той способности, на основе которой ты её сделал, и если это цепь тралла - Unit - issue order with targetign a unit - orc - chain lighting
ответ
Вам понадобится привязывать значение к вашему юниту с каменными доспехами. Если требуемых привязок будет несколько - стоит использовать базу данных.
Требуемое:
Массив групп юнитов(массив всегда содержит 8192 элемента (индексы 0-8191), но данные массива типа group следует инициировать через создание групп). Будет задействовано по 1 группе на время действия способности.
Засовываем каменные доспехи в скрываемый (для игрока) спеллбук, выдаем спеллбук юниту с каменными доспехами. Даем юниту активку-пустышку вроде берсерка троллей (можно кастовать не прерывая текущий приказ). Отлавливаем её каст. После каста - выделяем группу под хранение целей, которым было нанесено 100 урона в качестве ответки. Отлавливаем событие получения урона, проверяем наличие баффа способности-пустышки. Если бафф есть и урон больше 0 ед. (по хорошему нужно еще отделить урон от обычной атаки от магического, но это отдельная тема. Гуглите 200% магрезиста), проверяем наличие юнита в выделенной группе. Если его там нет - наносим 100 ед. от лица получившего урон и добавляем в группу.
ответ
Неуязвимость проверяют через даммика с атакой, через приказ, сможет ли атаковать или нет, просто проверка выполнения приказа. Так же пытаются нанести урон и смотрят сколько он отнял здоровья, так можно и определить неуязвимость и вычислить резист юнита к конкретному типу урона.
ответ
есть itempool или можно сделать массив типов итемов, и рандомить шанс выпадения, и рандомить тип итема. вбей в поиск, посмотри еще на хайве про itempool или про дроп итемов
ответ
Кароче берёшь крит и лайфстил.
Если правильно всё выдавать - будет работать, так что эксперементируй.
Подсказка: в момент замаха крит уже должен быть у юнита.
Более подробно или с примером - мб попозже...
Но не ответить хоть что-то - не смог.

23

» WarCraft 3 / Создание модели

Похожие вопросы:

ответ
на протяжении всей линейки оно оставалось неподвижным и двигалась вместе с костью
Не понимаю, что имеется в виду. Это вроде как взаимоисключающие вещи. Чтобы двигалась вместе с костью — привяжи к кости. Если нужно анимировать только крепление — создай отдельную кость для крепления. Если его вообще не нужно анимировать — просто поставь его в нужные координаты, оно там и будет.
ответ
Импортом, молния это что то вроде анимированной текстуры, то есть картинка а само движение, размер и цвет настраивается в скл. таблице, на подобии настройки способностей, но вот только близзарды не сделали нам редактор молний...
Кароче нужно выколупать файл splats \ LightningData.slk и редактировать его в Excel или другом слк редакторе, собственно все редактирование сводится к копи-пасту стандартной молнии и изменения её текстуры, текстуры есть на хайве, можно самому замутить текстуру у молний они не замысловатые.
Отредактированный файл нужно импортировать в карту по тому же пути, так же текстуры если они нестандартные...
ответ
Stalker Freedom:
Чаще всего проблема заключается в том, что юные маперы забывают импортировать текстуры. Ты ведь всё правильно импортировал?
ответ
проверьте анимацию в model editor'е
если там криво, значит нужно искать кривой кадр, копировать его, удалять, и вставлять снова на то же место
ответ
~8gabriel8:
Hate, вообще-то указал, что текстура за тобой, а ты вынудил меня напрягаться(
Хотя режим же сменил с Transparent на Blend, так что правильно всё

23

» WarCraft 3 / Скорость анимации юнита

Похожие вопросы:

ответ
Да. Скорость анимации атаки только через модель. Через РО мнельзя заставить быстрее замахнуться или рубануть.
Попробуй триггерно ускорять анимациИ юнита (именно, что все сразу; так оно работает) - по завершении удара возвращать дефолную. И уже, учитывая триггер, подобрять те значения анимации атаки.
ответ
Можно через редактор объектов, не изменяя модель. Найди строчки "Графика - Анимация: скорость ходьбы" и "Графика - Анимация: скорость бега" и измени значения, как тебе нужно (уменьшение - ускоряет анимацию, увеличение - замедляет анимацию).
ответ
Графика - Анимация: обратный ход броска
Графика - Анимация: точка броска
ответ
Я полагал правильно
ответ
Плохая модель, в ретере у анимаций Death и Deсay вообще нет модели
Если судить по MDL файлу
То модель вообще схлопнута в точку на этих анимациях, поэтому её и не видно, хотя в редакторе всё хорошо, есть анимация разрушения
Можно было бы починить но ретера очень часто выдаёт факапистый МДЛ файл, а сам MDX 1000 рефорджа никак не отредактировать, в любом случае даже если бы был успех, то только через редактирование модели, а это + 4-10 мб за каждую модель, стоит ли оно того? - нет.
Посмотрел другие модели зданий, они все такие, весьма странно, как это в игре работает, всегда имел дело только с моделями персонажей или декором, и такой проблемы не замечалось.
В любом случае кодом это не поправить